package com.sskj.trafficcontrol.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {

    /**
     * 根据时间获取时间的字符串
     * @return
     */
    public static String getDateStr(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String dateStr = sdf.format(new Date());
        return dateStr;
    }

    /**
     * 根据时间获取时间的字符串
     * @param date
     * @return
     */
    public static String getDateStr(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdf.format(date);
        return dateStr;
    }

    /**
     * 返回当前时间 2018年09月10日 11:12:23调用得到 ==》 2018-09-10 23:59:59 的数据 获取当天0点的数据(String类型)
     * @return
     */
    public static String getDateZeroStr(){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdf.format(calendar.getTime());
        return dateStr;
    }

    /**
     * 返回当前时间 2018年09月10日 11:12:23调用得到 ==》 2018-09-10 23:59:59 的数据 获取当天0点的数据(Date类型)
     * @return
     */
    public static Date getDateZero(){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        return calendar.getTime();
    }

    /**
     * 返回前一天的零点数据
     * @return
     */
    public static Date getDateLaseZero(){
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -1); //得到前一天
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        return calendar.getTime();
    }

    /**
     * 根据时间格式返回日期格式 2016-10-24 21:59:06
     * @throws ParseException
     */
    public static Date strToDate(String datestr){
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return sdf.parse(datestr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 返回两个时间差之间的天数
     * @param lastdate 上一次的时间
     * @param nowdate 当前时间
     * @return days 天数
     */
    public static Integer getDaysBetweenDate(Date lastdate, Date nowdate){
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String lastdatestr = sdf.format(lastdate);
            String nowdatestr = sdf.format(nowdate);

            Date lasttime = sdf.parse(lastdatestr);
            Date nowtime = sdf.parse(nowdatestr);

            long between_days=(nowtime.getTime()-lasttime.getTime())/(1000*3600*24);
            return  Integer.parseInt(String.valueOf(between_days));
        }catch (ParseException ex){
            ex.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        System.out.println(getDateZeroStr());
    }

}
